; DEBUG = 10F90-113D0, 113F0-11800
;
; 10F90-10FA0 = CD1 LBA / CD2 LBA / CD3 LBA / CD4 LBA
; 10FA0-10FB0 = CD # / DVD5 state
; 10FB0-11xxx = address -> time LBA remap




;-->
;8005ecf8 : 3C031B4E  LUI     00000000 (v1), 1b4e (6990),
;8005ecfc : 346381B5  ORI     1b4e0000 (v1), 1b4e0000 (v1), 81b5 (33205),
;-->
;8005ed00 : 24840096  ADDIU   00033dad (a0), 00033dad (a0), 0096 (150),


org $80010fb0

; avoid LBA range (0-17)
sltiu v1,a0,$18
bne v1,r0,EXIT
nop


; remap DIR-ROOT (9542A)
lui v0,$9
ori v0,v0,$542A
bne v0,a0,REMAP_LBA
nop


; prepare CD ptr (0-3)
lui v0,$8008
lbu v1,$2a22(v0)
nop


; 9542A + 0-3
beq r0,r0,EXIT
addu a0,a0,v1

; ############################
; ############################
; ############################

REMAP_LBA:

; avoid LBA range (9542A+)
sltu v1,a0,v0
beq v1,r0,EXIT
nop



; adjust LBA ptr (start at zero)
ori v0,r0,$18
sub a0,a0,v0

; prepare CD ptr (0-3)
lui v0,$8008
lbu v1,$2a22(v0)
nop

; load new starting ptr (table)
lui v0,$8001
sll v1,v1,2
addu v0,v0,v1
lw v1,$0f90(v0)
nop

; remap LBA to final range
addu a0,a0,v1

; ===========================
; ===========================
; ===========================
; ===========================

EXIT:

; OLD code
lui v1,$1b4e
ori v1,v1,$81b5

j $8005ed00
nop
